/**
 * 格式化日期时间字符串。
 * 
 * @param {Date|string|number} inputDate - 输入的日期时间，可以是 Date 对象、ISO 字符串或时间戳。
 * @param {string} [format='YYYY-MM-DD HH-MM-SS'] - 输出的日期时间格式。
 * @param {string} [timeZone='Asia/Shanghai'] - 时区，默认为东八区。
 * @returns {string} 格式化后的日期时间字符串。
 * 
 * @example
 * console.log(formatDateTime(new Date(), 'YYYY-MM-DD HH-MM-SS')); // 输出：2024-10-01 12-30-45
 * console.log(formatDateTime('2024-10-01T12:30:45Z', 'YYYY/MM/DD HH:MM:SS')); // 输出：2024/10/01 20:30:45
 * console.log(formatDateTime(1700000000000, 'DD-MM-YYYY HH-MM-SS')); // 输出：01-10-2024 12-30-45
 */
function getlocTime(format = 'YYYY-MM-DD HH-MM-SS', timeZone = 'Asia/Shanghai') {
  const formatter = new Intl.DateTimeFormat('en-US', {
    timeZone,
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: false // 使用 24 小时制
  })

  const date = new Date()
  const formatted = formatter.format(date)

  // 根据自定义格式化输出
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  const hours = String(date.getHours()).padStart(2, '0')
  const minutes = String(date.getMinutes()).padStart(2, '0')
  const seconds = String(date.getSeconds()).padStart(2, '0')

  switch (format) {
    case 'YYYY-MM-DD HH-MM-SS':
      return `${year}-${month}-${day} ${hours}-${minutes}-${seconds}`
    case 'YYYY/MM/DD HH:MM:SS':
      return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`
    case 'Zh-Cn':
    return `${year}年${month}月${day} ${hours}时${minutes}分${seconds}秒`
    default:
      return formatted; // 默认返回标准格式化结果
  }
}

module.exports = getlocTime